package com.utils;

import java.security.MessageDigest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Md5加密方法
 * 
 * @author shopping
 */
public class Md5Utils {
	
	private static final Logger log = LoggerFactory.getLogger(Md5Utils.class);
	
	public static void main(String[] args) throws Exception {
		String s = Md5Utils.hash("app_key6a7b39cf-44a6-4461-8402-baf665d9eca7formatjsonmethodds.xms.logistics_product.getlisttimestamp1586504956000v1.0.0{\"transport_mode\":\"1\"}80c96469-4dbb-4a27-9062-f8a6d524fcd0").toLowerCase();
		System.out.println(s);
	}

	private static byte[] md5(String s) {
		MessageDigest algorithm;
		try {
			algorithm = MessageDigest.getInstance("MD5");
			algorithm.reset();
			algorithm.update(s.getBytes("UTF-8"));
			byte[] messageDigest = algorithm.digest();
			return messageDigest;
		} catch (Exception e) {
			log.error("MD5 Error...", e);
		}
		return null;
	}

	private static final String toHex(byte hash[]) {
		if (hash == null) {
			return null;
		}
		StringBuffer buf = new StringBuffer(hash.length * 2);
		int i;

		for (i = 0; i < hash.length; i++) {
			if ((hash[i] & 0xff) < 0x10) {
				buf.append("0");
			}
			buf.append(Long.toString(hash[i] & 0xff, 16));
		}
		return buf.toString();
	}

	public static String hash(String s) {
		try {
			return new String(toHex(md5(s)).getBytes("UTF-8"), "UTF-8");
		} catch (Exception e) {
			log.error("not supported charset...{}", e);
			return s;
		}
	}
	
}
